﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;


// para el JSON
using System.Web.Script.Serialization;
using System.Web.Script.Services;



using Intelsi.Entity;
using Intelsi.BusinessLogic;
using Microsoft.Practices.Unity;
using Microsoft.Practices.Unity.Configuration;


namespace Intelsi.WB.Service
{
    /// <summary>
    /// Descripción breve de ProductoService
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // Para permitir que se llame a este servicio Web desde un script, usando ASP.NET AJAX, quite la marca de comentario de la línea siguiente. 
    // [System.Web.Script.Services.ScriptService]
    public class ProductoService : System.Web.Services.WebService
    {

        [Dependency]
        public IProductoBL productoBL { get; set; }


        public ProductoService()
        {
            using (var container = new UnityContainer())
            {
                container.LoadConfiguration();
                container.BuildUp(this.GetType(), this);
            }
        }


        [WebMethod]


        [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]

        public void GetGromProductoByDescripcion(string term)
        {
            var query = from p in productoBL.GtFromProductoByDescripcion(term)
                        orderby (p.IdProducto) descending

                        select new
                        {
                            value = p.IdProducto,
                            label = p.Nombre,
                            producto = new
                                        {
                                            codigo = p.Codigo,
                                            marca = p.Marca.Nombre,
                                            categoria = p.Categoria.Nombre,
                                            descripcion = p.Nombre,
                                            unidad = p.UniMedida
                                        }

                        };
            var json = new JavaScriptSerializer();

            Context.Response.ContentType = "application/json; charset=utf-8";
            Context.Response.Write(json.Serialize(query.Skip(0).Take(10).ToList()));
            Context.Response.End();  
                       
        }
    }
}
